<?php
#
#
# Copyright TEDECO, 2009. http://tedeco.fi.upm.es
#
# This file is part of kumenya.
#
# Kumenya is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Kumenya is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
#
#
#
?>
<?php
class Registration
{	
	const SCOPE = Enrollment;

	static public function PrepareRegistrationData ($data, $tableName) {
		$data[Uid . $tableName] = $data[Uid];
		unset ($data[Uid]);
		return $data;
	}

	static public function getFields () {
		$dbManager = new DBManager();
		$fields = $dbManager->TableFields (RegistrationsTable,self::SCOPE);
		$fields = Interfaz::DeleteFields ($fields, HonorableMention);
		$fields = Interfaz::DeleteFields ($fields, Percentage);
		$fields = Interfaz::DeleteFields ($fields, Accredited);
		return $fields;
	}		

	static public function getHonarableMentionFields () {
		$dbManager = new DBManager();
		$fields = $dbManager->TableFields (RegistrationsTable,self::SCOPE);
		$fields = Interfaz::DeleteFields($fields,Year);
		$fields = Interfaz::DeleteFields($fields,CompleteDocumentation);
		$fields = Interfaz::DeleteFields($fields,GovernmentGrant);
		$fields = Interfaz::DeleteFields($fields,Observations);
		$fields = Interfaz::DeleteFields ($fields, Accredited);
		return $fields;
	}		

	static public function getNotEditableHonarableMentions () {
		return Interfaz::FieldsType(Interfaz::DeleteFields(self::getHonarableMentionFields (),HonorableMention),Type);
	}		
	
	static public function getValidationFields () {
		$dbManager = new DBManager();
		$fields = $dbManager->MultipleTablesFields("ShowAccriditableStudents", self::SCOPE, DegreesTable, FALSE);
		return $fields;
	}

	static public function Register ($filledFields = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('NewRegistration',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function ProcessValidation ($filledFields = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('NewValidationRegistration',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}
	
	static public function AddUnit ($filledFields = array()) {
		$dbManager = new DBManager();
		return $dbManager->ExecuteProcedure ('ProcessUnitRegistration',self::SCOPE,$filledFields);
	}
	
	static public function SearchCriterias () {
		$dbManager = new DBManager();
		$criterias = $dbManager->SearchCriterias ('SearchRegistrations',self::SCOPE);
		if (empty($criterias[Type])) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $criterias;
	}		

	static public function Search ($criterias = array()) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('SearchRegistrations',self::SCOPE,$criterias);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table;	
	}

	static public function SearchLast ($criterias = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('ProcessRegistration',self::SCOPE,$criterias);
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function SearchValidations ($criterias = array()) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('SearchOfValidation',self::SCOPE,$criterias);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table;	
	}

	static public function SeeDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('RegistrationDetails',Enrollment, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table;
	}

	static public function SeeEditDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('EditRegistrationDetails',self::SCOPE, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		$table = $table[0];
		return $table;
	}

	static public function SeeHonorableMentionDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('HonorableMentionRegistrationDetails',self::SCOPE, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		$table = $table[0];
		return $table;
	}

	static public function SeeValidationDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('ValidationRegistrationDetails',Enrollment, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table;
	}

	static public function Modify ($filledFields = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('EditRegistration',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function EditHonorableMention ($filledFields = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('EditHonorableMentionRegistration',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;
	}

	static public function Report ($filledFields = array()) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('EnrollmentDebt',Accountancy,$filledFields);		
		if ($result) {
			$result = $dbManager->ExecuteProcedure ('RegistrationDebt',Accountancy,$filledFields);
			if ($result)
				return $result;
		}
		Interfaz::Error($dbManager->GetError());
		return $result;		
	}
}